#ifndef RENAMEFOLDERCOMMAND_H
#define RENAMEFOLDERCOMMAND_H

#include "base_command.h"
#include <QString>
#include <QNetworkReply>
#include <QJsonObject>

// RenameFolderCommand 命令类
// 负责重命名文件夹
class RenameFolderCommand : public BaseCommand
{
    Q_OBJECT

public:
    explicit RenameFolderCommand(QObject *parent = nullptr);
    ~RenameFolderCommand();
    
    // 设置 QNetworkAccessManager 实例（重写基类方法以连接信号）
    void setNetworkAccessManager(QNetworkAccessManager *networkManager);
    
    // 执行命令
    // folderId: 要重命名的文件夹ID
    // newName: 新文件夹名
    // 返回：是否成功发起请求（异步操作，实际结果通过信号通知）
    bool execute(const QString &folderId, const QString &newName);

signals:
    // 重命名文件夹完成信号
    void renameFolderCompleted(int resultCode, const QString &message);

private slots:
    // 处理重命名文件夹响应
    void handleRenameFolderResponse(QNetworkReply *reply);

private:
    // 解析重命名文件夹响应
    void parseRenameFolderResponse(const QJsonObject &response, const QString &folderId, const QString &newName);
    
    // 构建请求 URL
    QString buildRequestUrl(const QString &baseUrl, const QString &folderId);

private:
    QString m_pendingFolderId; // 待重命名的文件夹ID
    QString m_pendingNewName; // 待重命名的新文件夹名
};

#endif // RENAMEFOLDERCOMMAND_H

